Add VulReasoner interval parity workflow#87
Draft
StarGazerM wants to merge 8 commits into
Draft
Conversation
Demonstrates that PyReason's minimal_example (delay-0, [1,1] bounds) is the
degenerate, fully-covered case of srdatalog's plain-Datalog semantics: runs
PyReason live and matches the program's least model {Mary, Justin, John}.
Surveys the real PyReason example files to show <-N delay changes the
fixpoint only under non-monotonicity (negation/closed-world); positive
programs are delay-invariant.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts: # src/srdatalog/ir/codegen/cuda/main_file.py # src/srdatalog/ir/hir/__init__.py # src/srdatalog/ir/mir/print.py # src/srdatalog/ir/mir/types.py # tests/fixtures/integration/doop.mir.sexpr # tests/fixtures/tc.mir.sexpr # tests/fixtures/tc_with_plan.mir.sexpr
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Why
VulReasoner's annotation callback does two context-dependent reductions: it selects one derivation witness within each source rule, then intersects the selected intervals contributed by different rules. Treating all duplicates uniformly either intersects losing witnesses or makes different rules compete. The new candidate relations and lattice maintenance preserve that semantic boundary through CUDA execution.
The PyReason oracle also requires a different interpreter and dependency stack from normal SRDatalog development. The nested project pins the validated PyReason Git revision and removes the previous dependency on a dirty sibling checkout.
Impact
The repository now has a reproducible end-to-end path from the supplied PyReason rules and GraphML input to exact SRDatalog results, plus executable documentation and larger shared workloads for correctness and performance analysis. Contributors can use the root lock for SRDatalog work while the notebook and parity harness use
minimal_vulreasoner/uv.lockwithout changing the root environment.Validation
uv run --frozen pytest -q tests/test_cuda_orchestrator_lattice.py tests/test_integration_vulreasoner_minimal_optional.py tests/test_lattice_value_semantics.py tests/test_vulreasoner_analyst_rule_loader.py tests/test_vulreasoner_graphml_ingest.py tests/test_vulreasoner_srdatalog_query.py tests/test_vulreasoner_stress_workload.py— 29 passed, 1 skippeduv run --frozen --group jupyter-test pytest -q tests/test_viz_jupyter.py tests/test_viz_doop_jupyter.py— 10 passeduv run --project minimal_vulreasoner --frozen python minimal_vulreasoner/validate_minimal_parity.py --no-compile --jobs 8— complete temporal PyReason/SRDatalog parity passedminimal_vulreasoner/.venvcompleted without cell errors; the PyReason scaling suite completed within its 120-second timeoutae3d94e59f1417f1f7ab264f4bf5146e9e511a4b35c1a351bcc24cb4039d4b2duv run --frozen --no-default-groups --group docs sphinx-build -W --keep-going -b html docs docs/_build/html— passeduv lock --check